<?
	class Usuario {
		var $id;
		var $nombre;
		var $apellido;
		var $alias;
		var $password;
		var $esAdmin;
   
		function getNombreCompleto(){
			return $this->apellido . " " . $this->nombre;
		}
		
		/***************************************************************************************/
		/***************************************************************************************/
		/* 								OBTENER USUARIO                                        */
		/***************************************************************************************/
		/***************************************************************************************/
		function obtenerUsuario($db,$idUsuario){
			$query = 'call usuarioTraer(';
			$query .= ($idUsuario != NULL ? $idUsuario : 'null') . ',';
			$query .= 'null' . ',';
			$query .= 'null' . ',';
			$query .= 'null' . ');';

			$res = $db->query($query);
			
			if ($row = $db->fetch_array($res)) {
				// for every field in the result..
				$this->id = $row['idUsuario'] ;
				$this->nombre = utf8_encode ($row['nombre']) ;
				$this->apellido =utf8_encode ($row['apellido']) ;
				$this->email=utf8_encode ($row['email']) ;
				$this->alias = utf8_encode ($row['alias']) ;
				$this->esAdmin = $row['esAdmin'] ;
				//$rows[] = $this;

			}
			return $rows;
		}
		
		/***************************************************************************************/
		/***************************************************************************************/
		/* 								LOGUEAR USUARIO                                        */
		/***************************************************************************************/
		/***************************************************************************************/
		function loguearUsuario($db,$alias, $password){
			$query = 'call usuarioLoguear(';
			$query .= ($alias != NULL ? '\'' .  $alias. '\'' : 'null') . ',';
			$query .= ($password != NULL ? '\'' .  $password. '\'' : 'null') . ');';

			$res = $db->query($query);
			
			if ($row = $db->fetch_array($res)) {
				// for every field in the result..
				$this->id = $row['idUsuario'] ;
				$this->nombre = utf8_encode ($row['nombre']) ;
				$this->apellido =utf8_encode ($row['apellido']) ;
				$this->alias = utf8_encode ($row['alias']) ;
				$this->esAdmin = $row['esAdmin'] ;

				//$rows[] = $this;
				return true;
			}else {
				return false;
			}
			
		}
				
		/***************************************************************************************/
		/***************************************************************************************/
		/* 								LISTAR USUARIOS                                        */
		/***************************************************************************************/
		/***************************************************************************************/
		function listar($db){
			$query = 'call usuarioTraer(null,null,null,null);';

			$res = $db->query($query);
			$usuarios = new UsuarioCollection();
			
			while ($row = $db->fetch_array($res)) {
				$unUsuario = new Usuario();

				$unUsuario->id = $row['idUsuario'] ;
				$unUsuario->nombre = utf8_encode ($row['nombre']) ;
				$unUsuario->apellido =utf8_encode ($row['apellido']) ;
				$unUsuario->alias = utf8_encode ($row['alias']) ;
				$unUsuario->esAdmin = $row['esAdmin'] ;
				$usuarios->add($unUsuario);
				
				$unUsuario = NULL;
				//$rows[] = $this;

			}
			return $usuarios;
		}

		/***************************************************************************************/
		/***************************************************************************************/
		/* 								GUARDAR USUARIO                                        */
		/***************************************************************************************/
		/***************************************************************************************/
		function guardar($db){
			$esAlta = 1;
			if ($this->id != 0)
				$esAlta = 0;
				
			$query = 'call usuarioSalvar(';
			$query .= ($this->id != NULL ? $this->id : 'null') . ',';
			$query .= ($this->email != NULL ? '\'' . utf8_encode($this->email) . '\'' : 'null') . ',';
			$query .= ($this->nombre != NULL ? '\'' .  utf8_encode($this->nombre) . '\'' : 'null') . ',';
			$query .= ($this->apellido != NULL ? '\'' .  utf8_encode($this->apellido) . '\'' : 'null') . ',';
			$query .= ($this->alias != NULL ? '\'' .  utf8_encode($this->alias) . '\'' : 'null') . ',';
			$query .= ($this->password != NULL ? '\'' .  utf8_encode($this->password) . '\'' : 'null') . ',';
			$query .= ($esAlta) . '); ';

			$res = $db->query($query);
			if ($row = $db->fetch_array($res)) {
				$this->id = $row['idUsuario'] ;
			}
		}
		
				
		/***************************************************************************************/
		/***************************************************************************************/
		/* 								BAJA DE UN USUARIO                                     */
		/***************************************************************************************/
		/***************************************************************************************/
		function eliminarUsuario($db){
			$query = 'call usuarioEliminar(';
			$query .= $this->id . ');';
			
			$res = $db->query($query);
			if ($row = $db->fetch_array($res)) {

			}
		}
		
	}
	
	class UsuarioCollection implements IteratorAggregate
	{
		var $items = array();
		var $count = 0;
	
		// Required definition of interface IteratorAggregate
		public function getIterator() {
			return new MyIterator($this->items);
		}
	
		public function add($value) {
			$this->items[$this->count++] = $value;
		}
	}
?>